package org.frog.sgs.card.general.listener.all;

import org.frog.sgs.card.general.listener.GeneralEventListener;
import org.frog.sgs.io.SgsMsg;

/**
 * 基本事件
 * 
 * @author duanxiangqi
 * @date 2012-10-28
 */
public interface BaseEventListener extends GeneralEventListener {

	/** 回合开始前初始化 */
	void myRoundInit(SgsMsg msg) throws Exception;

	/** 回合开始阶段 */
	void myRoundStart(SgsMsg msg) throws Exception;

	/** 判定阶段 */
	void myJudgeStart(SgsMsg msg) throws Exception;

	/** 判定是否生效 */
	void judgeScheme(SgsMsg msg) throws Exception;

	/** 获取判定牌 */
	void judgeSchemeResult(SgsMsg msg) throws Exception;

	/** 得到判定结果 */
	void judgeSchemeGetJudge(SgsMsg msg) throws Exception;

	/** 执行判定结果 */
	void judgeSchemeExecute(SgsMsg msg) throws Exception;

	/** 摸牌阶段 */
	void myGetCardsStart(SgsMsg msg) throws Exception;

	/** 从牌堆摸牌 */
	void getCards(SgsMsg msg) throws Exception;

	/** 出牌阶段 */
	void myUseCardsStart(SgsMsg msg) throws Exception;

	/** 准备出牌 */
	void useCardsPrepare(SgsMsg msg) throws Exception;

	/** 使用一张牌 */
	void useCards(SgsMsg msg) throws Exception;

	/** 使用【杀】 */
	void useSha(SgsMsg msg) throws Exception;

	/** 被使用【杀】时 */
	void beiSha(SgsMsg msg) throws Exception;

	/** 询问被【杀】时是否出闪 */
	void beiShaShanAsk(SgsMsg msg) throws Exception;

	/** 询问被【杀】时出闪结果 */
	void beiShaShanResult(SgsMsg msg) throws Exception;

	/** 使用【杀】的结果 */
	void useShaResult(SgsMsg msg) throws Exception;

	/** 使用【桃】 */
	void useTao(SgsMsg msg) throws Exception;

	/** 使用锦囊 */
	void useScheme(SgsMsg msg) throws Exception;

	/** 受到伤害 */
	void reduceStrength(SgsMsg msg) throws Exception;

	/** 回复体力 */
	void addStrength(SgsMsg msg) throws Exception;

	/** 濒临死亡 */
	void closeToDie(SgsMsg msg) throws Exception;

	/** 濒临死亡被询问 */
	void closeToDieAsk(SgsMsg msg) throws Exception;

	/** 死亡 */
	void die(SgsMsg msg) throws Exception;

	/** 询问是否使用【八卦盾】 */
	void baGuaDunAsk(SgsMsg msg) throws Exception;

	/** 询问【八卦盾】结果 */
	void baGuaDunResult(SgsMsg msg) throws Exception;

	/** 使用【麒麟弓】 */
	void qiLinGong(SgsMsg msg) throws Exception;

	/** 使用【方天画戟】 */
	void fangTianHuaJi(SgsMsg msg) throws Exception;

	/** 使用【丈八蛇矛】 */
	void zhangBaSheMao(SgsMsg msg) throws Exception;

	/** 使用【青龙偃月刀】 */
	void qingLongYanYueDao(SgsMsg msg) throws Exception;

	/** 使用【贯石斧】 */
	void guanShiFu(SgsMsg msg) throws Exception;

	/** 询问是否使用【寒冰箭】 */
	void hanBingJianAsk(SgsMsg msg) throws Exception;

	/** 询问【寒冰箭】结果 */
	void hanBingJianResult(SgsMsg msg) throws Exception;

	/** 询问是否使用【雌雄双股剑】 */
	void ciXiongShuangGuJianAsk(SgsMsg msg) throws Exception;

	/** 询问【雌雄双股剑】结果 */
	void ciXiongShuangGuJianResult(SgsMsg msg) throws Exception;

	/** 被使用锦囊时 */
	void beiScheme(SgsMsg msg) throws Exception;

	/** 询问是否使用【无懈可击】 */
	void wuXieKeJiAsk(SgsMsg msg) throws Exception;

	/** 询问【无懈可击】结果 */
	void wuXieKeJiResult(SgsMsg msg) throws Exception;

	/** 使用【闪电】 */
	void shanDian(SgsMsg msg) throws Exception;

	/** 使用【乐不思蜀】 */
	void leBuSiShu(SgsMsg msg) throws Exception;

	/** 使用【借刀杀人】 */
	void jieDaoShaRen(SgsMsg msg) throws Exception;

	/** 被使用【借刀杀人】 */
	void beiJieDaoShaRen(SgsMsg msg) throws Exception;

	/** 使用【五谷丰登】 */
	void wuGuFengDeng(SgsMsg msg) throws Exception;

	/** 执行【五谷丰登】 */
	void wuGuFengDengExecute(SgsMsg msg) throws Exception;

	/** 使用【无中生有】 */
	void wuZhongShengYou(SgsMsg msg) throws Exception;

	/** 执行【无中生有】 */
	void wuZhongShengYouExecute(SgsMsg msg) throws Exception;

	/** 使用【桃园结义】 */
	void taoYuanJieYi(SgsMsg msg) throws Exception;

	/** 执行【桃园结义】 */
	void taoYuanJieYiExecute(SgsMsg msg) throws Exception;

	/** 使用【南蛮入侵】 */
	void nanManRuQin(SgsMsg msg) throws Exception;

	/** 询问【南蛮入侵】需要打出【杀】 */
	void nanManRuQinNeedShaAsk(SgsMsg msg) throws Exception;

	/** 询问【南蛮入侵】需要【杀】结果 */
	void nanManRuQinNeedShaResult(SgsMsg msg) throws Exception;

	/** 使用【万箭齐发】 */
	void wanJianQiFa(SgsMsg msg) throws Exception;

	/** 询问需要打出【闪】 */
	void wanJianQiFaNeedShanAsk(SgsMsg msg) throws Exception;

	/** 询问需要【闪】结果 */
	void wanJianQiFaNeedShanResult(SgsMsg msg) throws Exception;

	/** 使用【顺手牵羊】 */
	void shunShouQianYang(SgsMsg msg) throws Exception;

	/** 执行【顺手牵羊】 */
	void shunShouQianYangExecute(SgsMsg msg) throws Exception;

	/** 使用【过河拆桥】 */
	void guoHeChaiQiao(SgsMsg msg) throws Exception;

	/** 询问【过河拆桥】需要拆去的牌 */
	void guoHeChaiQiaoAsk(SgsMsg msg) throws Exception;

	/** 执行【过河拆桥】 */
	void guoHeChaiQiaoExecute(SgsMsg msg) throws Exception;

	/** 使用【决斗】 */
	void jueDou(SgsMsg msg) throws Exception;

	/** 执行【决斗】 */
	void jueDouExecute(SgsMsg msg) throws Exception;

	/** 询问【决斗】需要打出【杀】 */
	void jueDouNeedShaAsk(SgsMsg msg) throws Exception;

	/** 询问【决斗】需要【杀】结果 */
	void jueDouNeedShaResult(SgsMsg msg) throws Exception;

	/** 弃牌阶段 */
	void myGiveupCardsStart(SgsMsg msg) throws Exception;

	/** 询问要丢弃的牌 */
	void giveupCardsAsk(SgsMsg msg) throws Exception;

	/** 执行弃牌 */
	void giveupCardsExecute(SgsMsg msg) throws Exception;

	/** 回合结束阶段 */
	void myRoundEnd(SgsMsg msg) throws Exception;

	/** 执行回合结束 */
	void roundEndExecute(SgsMsg msg) throws Exception;

}
